<?php

namespace Common\Model;

use Think\Model\ViewModel;

/**
 * 图片模型
 * 负责图片的上传
 */
class UploadModel extends ViewModel {

    /**
     * 单张图片上传(最新，以后请用这个)
     * @param  array  $files   要上传的文件列表（通常是$_FILES数组）
     * @return array           文件上传成功后的信息
     */
    function imgApi($files = '', $save_path = '', $save_name = '') {
    	/* 临时上传目录设置 */
    	$temp_path = '/temp/';
    	
    	if (empty($save_path)) {
            /* 默认上传目录设置 */
            $save_path = 'Public/upload/';
        }        
		
        if (empty($save_name)) {
            /* 默认保存文件名字 */
            $save_name = time() . mt_rand(1, 1000);
        }

        if (empty($files)) {
            $files = $_FILES;
        }

        $upload = new \Think\Upload(); // 实例化上传类
        $upload->maxSize = 3145728; // 设置附件上传大小
        $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型
        $upload->rootPath = './Public'; // 设置附件上传根目录
        $upload->savePath = $temp_path; // 设置附件上传（子）目录（相对于根路径）
        $upload->saveName = $save_name;   //上传的文件名
        $upload->autoSub = false;
        //$upload->subName = array('date', 'Ymd');

        /* 上传文件 */
        $info = $upload->uploadOne($files);

        if (!$info) {// 上传错误提示错误信息
            $result = array(
                "result" => false,
                "info" => $upload->getError()
            );
            return $result;
        } else {// 上传成功
        	//dump($upload->rootPath.$info['savepath'].$info['savename']);
        	//上传到服务器
        	$data=array(
        			'file'=>new \CURLFile(realpath($upload->rootPath.$info['savepath'].$info['savename'])),
        			'type'=>'file',
        			'savePath'=>$save_path,
        			'isThumb'=>1,
        			'thumbWidth'=>150,
        			'thumbHeigh'=>150,
        	);
        	 
        	$rt=http_post(C('IMG_UPLOAD_URL').'?sign='.C('IMG_SIGN'), $data,true);
        	//dump($data);
        	//dump(C('IMG_UPLOAD_URL').'?sign='.C('IMG_SIGN'));
        	//dump($rt);
        	if (!$rt){
        		$result = array(
        				"result" => false,
        				"info" => '文件服务器错误！'
        		);
        		return $result;
        	}
        	
        	
        	$rt=json_decode($rt,true);
        	//dump($rt);
        	if($rt['result']){
        		$result = array(
        				"result" => true,
        				"path" => C('IMG_DOMAIN').$rt['path'],
        				'thumb'=>C('IMG_DOMAIN').$rt['thumbPath']
        		);
        	}
        	else{
        		$result = array(
        				"result" => false,
        				"info" => $rt['errorMsg']
        		);
        	}
        	
        	return $result;
        }
    }

    /**
     * 生成缩略图
     * @param type $filePath 图片路径
     * @param string $thumbSavePath 缩略图保存路径 
     * @param string $thumbSaveName 缩略图保存名称
     */
    function imgThumbApi($filePath, $thumbSavePath = '', $thumbSaveName = '') {

        if (empty($thumbSavePath)) {
            /* 默认上传目录设置 */
            $thumbSavePath = './Public/upload/thumb/';
        }
		
        if (!file_exists($thumbSavePath)) {//创建图片目录
        	if (mkdir($thumbSavePath, 0777, true) == false) {
        		return false;
        	} else if (chmod($thumbSavePath, 0777) == false) {
        		return false;
        	}
        }
        
        if (empty($thumbSaveName)) {
            /* 默认保存文件名字 */
            $thumbSaveName ="thumb_" . time() . mt_rand(1, 1000) . '.jpg';
        }

        $image = new \Think\Image();
        $image->open($filePath);
		// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
        $image->thumb(150, 150)->save($thumbSavePath . $thumbSaveName);
        return ltrim($thumbSavePath, '.') . $thumbSaveName;
    }

}
